<body>
General base classes for implementing the JCR interfaces.
<p>
This package contains simple base class implementations of the JCR API
interfaces. These classes implement the API methods either by throwing
Unsupported(Repository)OperationExceptions or by calling other API methods.
For example the BaseProperty.getString() method is implemented as
Property.getValue().getString(). See the javadoc comments of each method
for implementation details.
</p>
<p>
The purpose of this package is to make it easy to incrementally implement
the JCR API without creating a large numbers of stub methods. A JCR
implementation class can inherit one of these base classes and only override
the methods it needs.
</p>
<h2>Desing principles</h2>
<p>
The base classes in this package follow the design principles listed below.
The purpose of these design principles is to avoid introducing unnecessary
dependencies or complexities.
</p>
<ul>
  <li>
    <strong>No member variables.</strong> To avoid introducing any extra
    memory overhead or complex state and object equality issues, none of
    these base classes have <em>any</em> member variables, private or
    otherwise. However the implemented methods are free to use as many
    local variables as they like.
  </li>
  <li>
    <strong>No extra methods.</strong> The only non-private methods defined
    in these base classes are the public methods declared in the JCR
    interfaces. Private utility methods are allowed to avoid duplicating code,
    but <em>no</em> protected or public methods other than those declared by
    the JCR API are allowed.
  </li>
</ul>
</body>
